const TransformPages = require("uni-read-pages");
const { webpack } = new TransformPages(); // 读取 manifest.json ，修改后重新写入
const fs = require("fs");
const manifestPath = "./src/manifest.json";
let Manifest = fs.readFileSync(manifestPath, { encoding: "utf-8" });
function replaceManifest(path, value) {
  const arr = path.split(".");
  const len = arr.length;
  const lastItem = arr[len - 1];

  let i = 0;
  let ManifestArr = Manifest.split(/\n/);

  for (let index = 0; index < ManifestArr.length; index++) {
    const item = ManifestArr[index];
    if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
    if (i === len) {
      const hasComma = /,/.test(item);
      ManifestArr[index] = item.replace(
        new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`),
        `"${lastItem}": ${value}${hasComma ? "," : ""}`
      );
      break;
    }
  }

  Manifest = ManifestArr.join("\n");
}
// 读取环境变量内容
replaceManifest("appid", `"${process.env.VUE_APP_WX_APP_ID}"`);
replaceManifest("mp-weixin.appid", `"${process.env.VUE_APP_WX_APP_ID}"`);
fs.writeFileSync(manifestPath, Manifest, {
  flag: "w",
});

module.exports = {
  productionSourceMap: false, // 不输出map文件
  transpileDependencies: [
    "uview-ui",
    "low_code_base_pub_merch",
    "uni-simple-router",
  ],
  configureWebpack: {
    optimization: {
      minimize: true,
    },
    plugins: [
      new webpack.DefinePlugin({
        ROUTES: webpack.DefinePlugin.runtimeValue(() => {
          const tfPages = new TransformPages({
            includes: ["path", "name", "aliasPath"],
          });
          return JSON.stringify(tfPages.routes);
        }, true),
      }),
    ],
  },
};
